package com.cus.shd.sharingjdbc.switchDataSource;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * @author ASUS
 * @Description TODO
 * @Date 2021/11/7 16:13
 **/
public class DataSourceContextHolder extends AbstractRoutingDataSource {

    private static final ThreadLocal<String> contextHolder = new InheritableThreadLocal<>();

    /**
     * 重写这个方法，这里返回使用的数据源 key 值
     * @return
     */
    @Override
    protected Object determineCurrentLookupKey() {
//        log.info("动态切换数据源：" + DataSourceContextHolder.getDataSource());
        return contextHolder.get();
    }

    /**
     *  设置数据源
     * @param db
     */
    public static void setDataSource(String db){
        contextHolder.set(db);
    }

    /**
     * 取得当前数据源
     * @return
     */
    public static String getDataSource(){
        return contextHolder.get();
    }

    /**
     * 清除上下文数据
     */
    public static void clear(){
        contextHolder.remove();
    }
}
